package szoftlab4;

/**
 * Olyan EpitoelemAktivVisitor, amely a visszaállításért felelős. Az aktív építőelemekben
 * meghívja a visszaállító metódust, a passzívakkal nem csinál semmit.
 * @author Peti
 */
@SuppressWarnings("LeakingThisInConstructor")
public class VisszaallitoEpitoelemAktivVisitor implements EpitoelemAktivVisitor
{

    /**
     * A VisszaallitoEpitoelemAktivVisitor konstruktora.
     */
    public VisszaallitoEpitoelemAktivVisitor()
    {
        Logger.log(this, HivasTipus.Create, "VisszaallitoEpitoelemAktivVisitor", "VisszaallitoEpitoelemAktivVisitor()");
        Logger.log(this, HivasTipus.Return, "VisszaallitoEpitoelemAktivVisitor", "VisszaallitoEpitoelemAktivVisitor()");
    }

    /**
     * Meghívja az aktív épitőelem visszaállító metódusát.
     *
     * @param e
     * Az átadott aktív építőelem.
     */
    public void visit(AktivEpitoelem e)
    {
        Logger.log(this, HivasTipus.Call, "VisszaallitoEpitoelemAktivVisitor", "void visit(AktivEpitoelem e)");
        e.visszaallit();
        Logger.log(this, HivasTipus.Return, "VisszaallitoEpitoelemAktivVisitor", "void visit(AktivEpitoelem e)");
    }

    /**
     * Ha az átadott építőelem nem aktív, akkor nem történik semmilyen esemény.
     *
     * @param e
     * Az átadott ÉS kapu.
     */
    public void visit(EsKapu e)
    {
        Logger.log(this, HivasTipus.Call, "VisszaallitoEpitoelemAktivVisitor", "void visit(EsKapu e)");
        Logger.log(this, HivasTipus.Return, "VisszaallitoEpitoelemAktivVisitor", "void visit(EsKapu e)");
    }

    /**
     * Ha az átadott építőelem nem aktív, akkor nem történik semmilyen esemény.
     *
     * @param e
     * Az átadott inverter.
     */
    public void visit(Inverter e)
    {
        Logger.log(this, HivasTipus.Call, "VisszaallitoEpitoelemAktivVisitor", "void visit(Inverter e)");
        Logger.log(this, HivasTipus.Return, "VisszaallitoEpitoelemAktivVisitor", "void visit(Inverter e)");
    }

    /**
     * Ha az átadott építőelem nem aktív, akkor nem történik semmilyen esemény.
     *
     * @param e
     * Az átadott kapcsoló.
     */
    public void visit(Kapcsolo e)
    {
        Logger.log(this, HivasTipus.Call, "VisszaallitoEpitoelemAktivVisitor", "void visit(Kapcsolo e)");
        Logger.log(this, HivasTipus.Return, "VisszaallitoEpitoelemAktivVisitor", "void visit(Kapcsolo e)");
    }

    /**
     * Ha az átadott építőelem nem aktív, akkor nem történik semmilyen esemény.
     *
     * @param e
     * Az átadott lámpa.
     */
    public void visit(Lampa e)
    {
        Logger.log(this, HivasTipus.Call, "VisszaallitoEpitoelemAktivVisitor", "void visit(Lampa e)");
        Logger.log(this, HivasTipus.Return, "VisszaallitoEpitoelemAktivVisitor", "void visit(Lampa e)");
    }

    /**
     * Ha az átadott építőelem nem aktív, akkor nem történik semmilyen esemény.
     *
     * @param e
     * Az átadott VAGY kapu.
     */
    public void visit(VagyKapu e)
    {
        Logger.log(this, HivasTipus.Call, "VisszaallitoEpitoelemAktivVisitor", "void visit(VagyKapu e)");
        Logger.log(this, HivasTipus.Return, "VisszaallitoEpitoelemAktivVisitor", "void visit(VagyKapu e)");
    }

    /**
     * Ha az átadott építőelem nem aktív, akkor nem történik semmilyen esemény.
     *
     * @param e
     * Az átadott vezeték.
     */
    public void visit(Vezetek e)
    {
        Logger.log(this, HivasTipus.Call, "VisszaallitoEpitoelemAktivVisitor", "void visit(Vezetek e)");
        Logger.log(this, HivasTipus.Return, "VisszaallitoEpitoelemAktivVisitor", "void visit(Vezetek e)");
    }

    /**
     * Ha az átadott építőelem nem aktív, akkor nem történik semmilyen esemény.
     *
     * @param e
     * Az átadott XOR kapu.
     */
    public void visit(XorKapu e)
    {
        Logger.log(this, HivasTipus.Call, "VisszaallitoEpitoelemAktivVisitor", "void visit(XorKapu e)");
        Logger.log(this, HivasTipus.Return, "VisszaallitoEpitoelemAktivVisitor", "void visit(XorKapu e)");
    }
}
